package com.cloudcc.mobile.dao;

import java.util.List;

import com.cloudcc.cloudframe.bus.EventList.ChatUserInfoEvent;
import com.cloudcc.cloudframe.bus.EventList.LoginEvent;
import com.cloudcc.cloudframe.bus.EventList.MenuFillEvent;
import com.cloudcc.cloudframe.bus.EventList.ServerUrlEvent;
import com.cloudcc.cloudframe.bus.EventList.UpdateUserEvent;
import com.cloudcc.cloudframe.model.param.UpdateUserParam;
import com.cloudcc.cloudframe.model.param.UserInfoParam;
import com.cloudcc.mobile.entity.LoginDBModel;

public interface UserEngine {

	// -王志强框架修改初步替换计划----------------------------------------------------------------------------------------------------
	void login_w(String name, String pwd,boolean isMD5,LoginEvent event);

	// -登陆及获取----------------------------------------------------------------------------------------------------------
	/**
	 * 登陆
	 * 
	 * @param name
	 * @param pwd
	 * @return
	 * @throws Exception
	 */
	String login(String name, String pwd) throws Exception;

	/**
	 * 获取小网页的前段网址
	 * 
	 * @param data
	 * @return
	 */
	String getAppUrl(String data);

	void getAppUrl_w(String userName, ServerUrlEvent event);

	/**
	 * 根据binding 去服务器 获取当前用户的操作菜单
	 */
	void getModules(MenuFillEvent event);
	
	/** 
	* 获取用户信息
	* @param param
	* @param event
	*/ 
	void getChatUserInfo(UserInfoParam param,ChatUserInfoEvent event);

	/** 
	* 更新用户
	* @param param
	* @param event
	*/ 
	void updateUser(UpdateUserParam param,UpdateUserEvent event);
	
	
	
	/**
	 * 插入或者更新用户
	 * @param login
	 * @return
	 */
	boolean insertOrUpdate(LoginDBModel login);
	
	/**
	 * 删除保存的用户
	 * @param userName
	 * @return
	 */
	boolean delete(String userName);
	
	
	/**
	 * 根据用户名获得密码
	 * @param userName
	 * @return
	 */
	String getPassword(String userName);
	
	/**
	 * 获得所有的 曾经等落过的帐号
	 * @return
	 */
	List<LoginDBModel> getAll();
	
	// 数据库操作------------------------------------------------------------------------------------------------------------
	/** * 打开数据库 */
	public void establishDb();

	/** * 插入一条记录 * @return 插入记录的id -1表示插入不成功 */
	public long insertOrUpdate(String userName, String password);

	/** * 更新一条记录 * @return 更新过后记录的id -1表示更新不成功 */
	public long update(String username, String password);

	/** * 根据用户名查询密码 */
	public String queryPasswordByName(String username);

	/** * 记住密码选项框是否被选中 * */
	public int queryIsSavedByName(String username);

	/** * 自动登录选项框是否被选中 * */
	public int queryIsAutoByName(String username);

	/** * 查询所有用户名 * */
	public String[] queryAllUserName();

	/** * 关闭数据库 */
	public void cleanup();
	
	//-----------------------------------------
	

}
